/**
 * @author ghp
 * @title 无重复字符的最长子串
 */
class Solution {
    public int lengthOfLongestSubstring(String s) {
        if (s.length() == 0) {
            return 0;
        }
        int max = Integer.MIN_VALUE;
        int l = 0;
        int r = 0;
        while (r < s.length()) {
            // 移动右指针，往窗口中添加新元素
            String ch = s.charAt(r++) + "";
            // 判断新增元素是否与窗口中已有元素发生重复，重复就移动左指针，直到不重复为止
            while (s.substring(l, r-1).contains(ch)) {
                l++;
            }
            // 获取当前最大 无重复字符的最长子串 的长度
            max = Math.max(max, r - l);
        }
        return max;
    }
}
